package com.fq.modules.sys.menu.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * @Author 超chao
 * @Description 系统菜单数据传输类
 * @Date 2024/11/21/周四 10:06
 * @Version 1.0
 */
@Data
@ApiModel(value="系统菜单数据传输类")
public class SysMenuDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "ID")
    private Long id;

    @ApiModelProperty(value = "上级菜单", required=true)
    @NotNull(message="上级菜单不能为空")
    private Long parentId;

    @ApiModelProperty(value = "1菜单2功能", required=true)
    @NotNull(message="菜单类型不能为空")
    private Integer menuType;

    @ApiModelProperty(value = "权限标识", required=true)
    @NotBlank(message="权限标识不能为空")
    private String permissionTag;

    @ApiModelProperty(value = "访问路径")
    private String path;

    @ApiModelProperty(value = "视图或Layout")
    private String component;

    @ApiModelProperty(value = "跳转地址")
    private String redirect;

    @ApiModelProperty(value = "名称")
    private String name;

    @ApiModelProperty(value = "路由标题", required=true)
    @NotBlank(message="路由标题不能为空")
    private String metaTitle;

    @ApiModelProperty(value = "路由图标")
    private String metaIcon;

    @ApiModelProperty(value = "高亮菜单")
    private String metaActiveMenu;

    @ApiModelProperty(value = "是否缓存")
    private Boolean metaNoCache;

    @ApiModelProperty(value = "是否隐藏")
    private Boolean hidden;

    @ApiModelProperty(value = "越小越前")
    private Integer sort;

    @ApiModelProperty(value = "状态")
    private Integer state;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "创建人")
    private String createBy;

    @ApiModelProperty(value = "修改人")
    private String updateBy;

    @ApiModelProperty(value = "数据标识")
    private Integer dataFlag;
}
